<?php
/**
 * <https://y.st./>
 * Copyright © 2018 Alex Yst <mailto:copyright@y.st>
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <https://www.gnu.org./licenses/>.
**/

$xhtml = array(
	'<{title}>' => 'Graduation request',
	'takedown' => '2017-11-01',
	'<{body}>' => <<<END
<img src="/img/CC_BY-SA_4.0/y.st./weblog/2018/11/15.jpg" alt="By the time I left home, it was already too dark for my camera" class="framed-centred-image" width="649" height="480"/>
<section id="drudgery">
	<h2>Drudgery</h2>
	<p>
		I&apos;ve submitted my graduation request.
		Now all I can do is wait.
		All graduation requests must be submitted during the first four weeks of the term (today is the second day if going by my clock, but the first day if going by the university&apos;s clock), but aren&apos;t processed until some point in the fifth through eighth weeks of the term.
		So it&apos;ll be about a month&apos;s time, minimum.
	</p>
	<p>
		Bizarrely, the first two courses I took at this school are showing up as transfer credits.
		I don&apos;t know what that&apos;s about, but it shouldn&apos;t interfere with anything, aside from a possible slight dent to my $a[GPA] if those courses don&apos;t get counted toward it.
	</p>
	<p>
		My discussion post for the day:
	</p>
	<blockquote>
		<p>
			An imperative programming language explains to a computer how to do a job.
			Step by step, each thing the computer must do is laid out, and all the computer has to do is follow the instructions.
			What the goal actually is isn&apos;t explained, but by following the instructions, the goal state can be reached.
			Imperative languages listed by the book are Fortran, Cobol, PL/I, Algol, C, C++, Ada, and Ada 95 (Ben-Ari, 1996).
			A non-imperative language doesn&apos;t explain at all how to reach the goal.
			Instead, it explains what the goal is.
			The computer must figure out how to reach the goal itself (Ben-Ari, 1996).
			The book doesn&apos;t provide any specific examples of non-imperative languages.
			I&apos;m not sure if any such languages even have names; perhaps due to their highly-limited scope, they don&apos;t need names.
			However, the book does tell us that certain applications such as word processors and spreadsheet applications allow non-programmers to use non-imperative languages to execute certain commands to be executed within the context of their documents.
		</p>
		<p>
			So when should each be used?
			Well, if you&apos;re at all contemplating what language to use, go with an imperative language.
			The fact that you&apos;re even asking what to use means you have options, which in tern means you&apos;re not working in an environment that provides an non-imperative language for your use.
			As said above, a non-imperative language doesn&apos;t describe the steps needed to get where you&apos;re going (Ben-Ari, 1996), so unless in an environment that can translate the goal state into said steps, my understanding is that non-imperative languages won&apos;t even function.
			The only thing that makes sense to use is a language that will actually function in your context.
			On top of that, imperative languages give you a lot of control that non-imperative languages simply don&apos;t.
		</p>
		<p>
			If you&apos;re working on something such as a spreadsheet though, a non-imperative language can be of great use (Ben-Ari, 1996).
			For example, if you want to ad cell A0 to cell D8, the non-imperative language implemented by the spreadsheet software will let you enter <code>A0+D8</code> into your destination cell and you don&apos;t have to worry about programming how to get the computer to do that.
			Furthermore, most spreadsheet applications don&apos;t let you enter and run code from external languages.
			You couldn&apos;t use an imperative language here even if you want to.
			Software packages are another example of use of an imperative language, and that language is interpreted and translated into actual instructions by the package manager.
		</p>
		<p>
			Long story short, use the language that works in the environment you need it in.
			For stand-alone programs, you&apos;ll need to use an imperative language because you don&apos;t have a program translating non-imperative language commands into something actually telling the computer what to do.
			You&apos;ll have to tell the computer what to do yourself, but in exchange, you&apos;ll get more control.
			For programs embedded in something such as a spreadsheet, you won&apos;t have imperative languages at your disposal and will need to instead use the specific non-imperative language provided to you by the (for example) spreadsheet software.
			You won&apos;t be able to do much, but in exchange, what you can do will be incredibly easy to get done and will be short and concise.
		</p>
		<div class="APA_references">
			<h3>References:</h3>
			<p>
				Ben-Ari, M. (1996). Understanding Programming Languages. Retrieved from <a href="https://my.uopeople.edu/pluginfile.php/356896/mod_page/content/30/understanding_programming_languages.pdf"><code>https://my.uopeople.edu/pluginfile.php/356896/mod_page/content/30/understanding_programming_languages.pdf</code></a>
			</p>
		</div>
	</blockquote>
	<p>
		I didn&apos;t get as much of the reading material completed as I&apos;d wanted to.
		I was just too tired.
		I think it&apos;s all the stress from this past week.
		I should still make it through this first week just fine though, which if nothing major happens, should give me time to rest.
	</p>
</section>
<section id="include.d">
	<h2><code>include.d</code></h2>
	<p>
		I finished the $a[XML] cleanliness checker.
		In the end, I decided not to have it throw exceptions in case a document doesn&apos;t measure up, and instead return a boolean, so I ended up needing to put the exception-throwing logic into the main build scripts for the website.
		I still need to come up with a pseudo-namespace for exception codes thrown outside the <code>include.d</code> library.
		The namespace won&apos;t be needed for other people using <code>include.d</code> exceptions, but I&apos;d like to avoid overlap of exception code use in my own code at least.
	</p>
	<p>
		I started work on repairing bad pages the cleanliness checker found, but I didn&apos;t have time to finish repairing them all.
		I&apos;ll need to finish by Wednesday though, so I can push my website update in time.
		A deliberate feature of this new system is that compilation of the website will halt if certain bad practices are detected on any of the pages.
	</p>
</section>
END
);
